<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // // 整理以下数组方法，写出数组方法的解释，并使用
      // 1. reduce
      // 参数：回调函数(上一次处理的返回值，当前处理元素[，当前处理元素索引])，初始值
      // 作用：计算数组所有元素
      // 返回值：遍历整个数组后的结果
      // 例如：
      // const arr = [1, 2, 3, 4]
      // const array = arr.reduce((acc, val) => acc + val, 0)
      // console.log(arr) // [1, 2, 3, 4]
      // console.log(array) // 10

      // 2. filter
      // 参数：回调函数(当前处理元素[,当前处理元素索引][,数组本身])[,用于 this 的值]
      // 作用：用于拷贝数组
      // 返回值：一个新的符合条件的值组成的数组，如果没有符合条件的值，则返回空数组。
      // 例如：
      // const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      // const array = arr.filter((item) => item >= 5)
      // console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      // console.log(array) // [5, 6, 7, 8, 9, 10]

      // 3. some
      // 参数：回调函数(当前测试元素[,当前测试元素索引][,数组本身])[,用于 this 的值]
      // 作用：用于判断数组
      // 返回值：一个 Boolean 类型的值
      // // // // 数组中有至少一个元素符合条件返回值为true,所有元素都不符合条件返回值为 false
      // 例如：
      // const arr = [1, 2, 3, 4, 5]
      // const array = arr.some((item) => item % 2 === 0)
      // console.log(arr) // [1, 2, 3, 4, 5]
      // console.log(array) // true

      // const array1 = arr.some((item) => item > 10)
      // console.log(arr) // [1, 2, 3, 4, 5]
      // console.log(array1) // false

      // 4. every
      // 参数：回调函数(当前测试元素[,当前测试元素索引][,数组本身])[,用于 this 的值]
      // 作用：用于判断数组
      // 返回值：一个 Boolean 类型的值
      // // // // 数组中所有元素符合条件返回值为true,只要有一个元素不符合条件返回值为 false
      // 例如：
      // const arr = [1, 30, 39, 29, 10, 13]
      // const array = arr.every((item) => item < 40)
      // console.log(arr) // [1, 30, 39, 29, 10, 13]
      // console.log(array) // true

      // const array1 = arr.every((item) => item < 30)
      // console.log(arr) // [1, 30, 39, 29, 10, 13]
      // console.log(array1) // false

      // 5. map
      // 参数：回调函数(当前测试元素[,当前测试元素索引][,数组本身])[,用于 this 的值]
      // 作用：遍历并处理数组每一项
      // 返回值：一个新数组，每个元素都是回调函数的返回值。
      // 例如：
      const arr = [2, 4, 6, 8]
      const array = arr.map((item) => {
        return item * item
      })
      console.log(arr) // [2, 4, 6, 8]
      console.log(array) // [4, 16, 36, 64]
    </script>
  </body>
</html>
